package com.github.blanexie.nexusj.infrastructure.event

import com.github.blanexie.nexusj.domain.peer.Size
import java.time.LocalDateTime


/**
 * 节点上报事件
 */
data class PeerReportEvent(
    override val id: String,                 // 事件id, 建议使用uuid
    val infoHash: String,           //
    val userId: Int,
    val reportTime: LocalDateTime,  // peer的上报时间点
    val uploadBytes: Size,
    val downloadBytes: Size,
    val duration: Long,             // 距离上次报告的时间间隔, 毫秒
    val addUploadBytes: Size,       // 与上次相比, 增加的上传量
    val addDownloadBytes: Size,     // 与上次相比, 增加的下载量
    val eventType: String,          // peer节点当前的状态
    override val publishTime: LocalDateTime = LocalDateTime.now(),  //发布时间
) : BaseEvent(id, publishTime)


abstract class BaseEvent(
    open val id: String,                 // 事件id, 建议使用uuid
    open val publishTime: LocalDateTime,  //发布时间
)